A typical client-server database system includes a client, a database server, and a database. The client portion includes two main components, a database application and a client driver interface. The database application issues database language commands, such as SQL (Structured Query Language) commands, and provides an interface to a user through a keyboard, screen, and pointing devices such as a mouse. The client driver interface, on the other hand, provides the connection and communication interface between the client and the database server.
A connection is a communication pathway between a client and a database server and a specific connection between a client and a database server is termed a database session. The database server responds to the database language commands sent from the client by executing database operations for accessing and manipulating a physical database. A logical unit of work that is comprised of one or more database language commands is referred to as a transaction.
Contained within the database server is the session state data that reflects the current transaction state of the database session. To initiate a database session, human intervention is required to manually log onto a database application. The logging on process establishes a new database session by connecting a client with a database server.
Normally, the database session lasts from the time the user connects until the time the user disconnects or exits the database application. However, if a database session failure occurs, the connection between the client and the database server is lost. Once the database session fails, the user will observe a visible interrupt in his service as access to the database is terminated. To continue accessing the database, the user must reconnect a client to an active database server. This requires human intervention to manually log back onto the system to establish a new database session.
Besides requiring human intervention to manually log back onto the system, the failure of a database session creates other significant problems to the user. Because the logon process creates a new database session, all previous transactions that were not complete at the time of the failure are lost. Thus the user must resubmit all lost transactions once the connection to the database is reestablished.
Based on the foregoing, it is desirable to provide a mechanism for handling the failure of a database session without requiring someone to perform manual reconnection steps. Additionally, it is also desirable for users not to lose session state data on the occurrence of a database session failure.